//定制请求的实例

//导入axios  npm install axios
import axios from 'axios';
import {ElMessage} from 'element-plus'
import router from "@/router";

//定义一个变量,记录公共的前缀  ,  baseURL
// const baseURL = 'http://localhost:8080';
const baseURL = '/api';
const instance = axios.create({baseURL})

// 添加请求拦截器
instance.interceptors.request.use(
    (config) => {
        //请求前的回调
        //添加token
        try {
            // 从localStorage获取token
            const token = localStorage.getItem('token')
            
            if (token && token !== '') {
                config.headers.token = `${token}`
            }
        } catch (error) {
            console.error('请求拦截器获取token失败:', error)
        }
        
        return config
    },
    (error) => {
        //请求错误的回调
        return Promise.reject(error)
    }
)

//添加响应拦截器
instance.interceptors.response.use(
    result=>{
        const resData = result.data || {};
        // 后端返回的 code 是字符串 '1'
        if(resData.code === '1' || resData.code === 1){
            return resData;
        }

        // 兼容原有的 code === 0 的判断
        if(resData.code === 0){
            return resData;
        }

        // alert(result.data.message? result.data.message:'服务异常')
        ElMessage.error(resData.message || resData.msg || '服务异常')
        //异步操作的状态转为失败
        return Promise.reject(resData)
    },
    err=>{
        //判断响应状态码
        if (err.response && err.response.status === 401){
            ElMessage.error('请先登录')
            router.push('/login')
        } else {
            ElMessage.error('服务异常')
        }

        return Promise.reject(err.message)
    }
)

export default instance;